home *** CD-ROM | disk | FTP | other *** search
/ PC World 2003 January / PCWorld_2003-01_cd.bin / Software / Vyzkuste / rychlokurz / httrack.exe / {app} / src / htsglobal.h < prev    next >
C/C++ Source or Header  |  2002-11-17  |  9KB  |  427 lines

  1. /* ------------------------------------------------------------ */
  2. /*
  3. HTTrack Website Copier, Offline Browser for Windows and Unix
  4. Copyright (C) Xavier Roche and other contributors
  5.  
  6. This program is free software; you can redistribute it and/or
  7. modify it under the terms of the GNU General Public License
  8. as published by the Free Software Foundation; either version 2
  9. of the License, or any later version.
  10.  
  11. This program is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with this program; if not, write to the Free Software
  18. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  19.  
  20.  
  21. Important notes:
  22.  
  23. - We hereby ask people using this source NOT to use it in purpose of grabbing
  24. emails addresses, or collecting any other private information on persons.
  25. This would disgrace our work, and spoil the many hours we spent on it.
  26.  
  27.  
  28. Please visit our Website: http://www.httrack.com
  29. */
  30.  
  31.  
  32. /* ------------------------------------------------------------ */
  33. /* File: Global #define file                                    */
  34. /* Author: Xavier Roche                                         */
  35. /* ------------------------------------------------------------ */
  36.  
  37. // Fichier rΘunissant l'ensemble des defines
  38.  
  39. #ifndef HTTRACK_GLOBAL_DEFH
  40. #define HTTRACK_GLOBAL_DEFH
  41.  
  42. // Version
  43. #define HTTRACK_VERSION      "3.22-2"
  44. #define HTTRACK_VERSIONID    "3.22.02"
  45. #define HTTRACK_AFF_VERSION  "3.x"
  46. //#define HTTRACK_AFF_WARNING  "This is a RELEASE CANDIDATE version of WinHTTrack Website Copier 3.0\nPlease report us any bug or problem"
  47.  
  48.  
  49.  
  50. // DΘfinition plate-forme
  51. #include "htssystem.h"
  52. #include "htsconfig.h"
  53.  
  54. // config.h
  55. #ifndef _WIN32
  56. #include "config.h"
  57.  
  58. #ifndef FTIME
  59. #define HTS_DO_NOT_USE_FTIME
  60. #endif
  61.  
  62. #ifndef SETUID
  63. #define HTS_DO_NOT_USE_UID
  64. #endif
  65.  
  66. #ifndef HTS_LONGLONG
  67. #ifdef SIZEOF_LONG_LONG
  68. #if SIZEOF_LONG_LONG==8
  69. #define HTS_LONGLONG 1
  70. #endif
  71. #endif
  72.  
  73. #ifndef HTS_LONGLONG
  74. #ifdef __sun
  75. #define HTS_LONGLONG 0
  76. #endif
  77. #ifdef __osf__
  78. #define HTS_LONGLONG 0
  79. #endif
  80. #ifdef __linux
  81. #define HTS_LONGLONG 1
  82. #endif
  83. #ifdef _WIN32
  84. #define HTS_LONGLONG 1
  85. #endif
  86. #endif
  87. #endif
  88.  
  89. #if DLLIB
  90. #define HTS_DLOPEN 1
  91. #else
  92. #define HTS_DLOPEN 0
  93. #endif
  94.  
  95. #endif
  96.  
  97.  
  98. // Socket windows ou socket unix
  99. #ifdef _WIN32
  100. #undef HTS_PLATFORM
  101. #define HTS_PLATFORM 1
  102. #define HTS_WIN 1
  103.  
  104. #else
  105.  
  106. #define HTS_WIN 0
  107. #ifdef __linux
  108. #undef HTS_PLATFORM
  109. #define HTS_PLATFORM 3
  110. #endif
  111. #endif
  112.  
  113. // compatibilitΘ DOS
  114. #if HTS_WIN
  115. #define HTS_DOSNAME 1
  116. #else
  117. #define HTS_DOSNAME 0
  118. #endif
  119.  
  120. // utiliser zlib?
  121. #ifndef HTS_USEZLIB
  122. // autoload
  123. #define HTS_USEZLIB 1
  124. #endif
  125.  
  126. #ifndef HTS_INET6
  127. #define HTS_INET6 0
  128. #endif
  129.  
  130. // utiliser openssl?
  131. #ifndef HTS_USEOPENSSL
  132. // autoload
  133. #define HTS_USEOPENSSL 1
  134. #endif
  135.  
  136. #ifndef HTS_DLOPEN
  137. #define HTS_DLOPEN 1
  138. #endif
  139.  
  140.  
  141. /*
  142. #undef HTS_USESWF
  143. #include "swf/swf2html_define.h"
  144. */
  145. #ifndef HTS_USESWF
  146. #define HTS_USESWF 1
  147. #endif
  148.  
  149. #if HTS_WIN
  150. #else
  151. #define __cdecl
  152. #endif
  153.  
  154. #ifdef HTS_ANALYSTE_CONSOLE
  155. #undef HTS_ANALYSTE_CONSOLE
  156. #define HTS_ANALYSTE_CONSOLE 1
  157. #endif
  158.  
  159. #if HTS_ANALYSTE
  160. #else
  161. #if HTS_WIN
  162. #else
  163. #undef HTS_ANALYSTE
  164. // Analyste
  165. #define HTS_ANALYSTE 1
  166. #define HTS_ANALYSTE_CONSOLE 1
  167. #endif
  168. #endif
  169.  
  170.  
  171. /* rc file */
  172. #if HTS_WIN
  173. #define HTS_HTTRACKRC "httrackrc"
  174. #else
  175.  
  176. #ifndef HTS_ETCPATH
  177. #define HTS_ETCPATH "/etc"
  178. #endif
  179. #ifndef HTS_BINPATH
  180. #define HTS_BINPATH "/usr/bin"
  181. #endif
  182. #ifndef HTS_LIBPATH
  183. #define HTS_LIBPATH "/usr/lib"
  184. #endif
  185. #ifndef HTS_PREFIX
  186. #define HTS_PREFIX "/usr"
  187. #endif
  188.  
  189. #define HTS_HTTRACKRC ".httrackrc"
  190. #define HTS_HTTRACKCNF HTS_ETCPATH"/httrack.conf"
  191.  
  192. #ifdef DATADIR
  193. #define HTS_HTTRACKDIR DATADIR"/doc/httrack/"
  194. #else
  195. #define HTS_HTTRACKDIR HTS_PREFIX"/share/doc/httrack/"
  196. #endif
  197.  
  198. #endif
  199.  
  200. /* Gestion des tables de hashage */
  201. #define HTS_HASH_SIZE 20147
  202. /* Taille max d'une URL */
  203. #define HTS_URLMAXSIZE 512
  204. /* Taille max ligne de commande (>=HTS_URLMAXSIZE*2) */
  205. #define HTS_CDLMAXSIZE 1024
  206. /* Copyright (C) Xavier Roche and other contributors */
  207. #define HTTRACK_AFF_AUTHORS "[XR&CO'2002]"
  208. #define HTS_DEFAULT_FOOTER "<!-- Mirrored from %s%s by HTTrack Website Copier/"HTTRACK_AFF_VERSION" "HTTRACK_AFF_AUTHORS", %s -->"
  209. #define HTS_UPDATE_WEBSITE "http://www.httrack.com/update.php3?Product=HTTrack&Version="HTTRACK_VERSIONID"&VersionStr="HTTRACK_VERSION"&Platform=%d&Language=%s"
  210.  
  211. #define H_CRLF "\x0d\x0a"
  212. #define CRLF   "\x0d\x0a"
  213. #if HTS_WIN
  214. #define LF "\x0d\x0a"
  215. #else
  216. #define LF "\x0a"
  217. #endif
  218.  
  219. /* Θquivaut α "paramΦtre vide", par exemple -F (none) */
  220. #define HTS_NOPARAM "(none)"
  221. #define HTS_NOPARAM2 "\"(none)\""
  222.  
  223. /* maximum et minimum */
  224. #define maximum(A,B) ( (A) > (B) ? (A) : (B) )
  225. #define minimum(A,B) ( (A) < (B) ? (A) : (B) )
  226.  
  227. /* chaine vide? */
  228. #define strnotempty(A) (((A)[0]!='\0') ? 1 : 0)
  229.  
  230. /* optimisation inline si possible */
  231. #ifdef __cplusplus
  232. #define HTS_INLINE inline
  233. #else
  234. #define HTS_INLINE
  235. #endif
  236.  
  237. #ifdef _WIN32
  238. #ifdef LIBHTTRACK_EXPORTS
  239. #define HTSEXT_API __declspec(dllexport)
  240. #else
  241. #define HTSEXT_API __declspec(dllimport)
  242. #endif
  243. #else
  244. #define HTSEXT_API 
  245. #endif
  246.  
  247. #ifndef HTS_LONGLONG
  248. #ifdef HTS_NO_64_BIT
  249. #define HTS_LONGLONG 0
  250. #else
  251. #define HTS_LONGLONG 1
  252. #endif
  253. #endif
  254.  
  255. // long long int? (or int)
  256. // (and int cast for system functions like malloc() )
  257.  
  258. #if HTS_LONGLONG
  259. #ifdef LLINT_FORMAT
  260.   typedef LLINT_TYPE LLint;
  261.   typedef LLINT_TYPE TStamp;
  262.   typedef int INTsys;
  263.   #define LLintP LLINT_FORMAT
  264. #else
  265.  #if HTS_WIN
  266.   typedef __int64 LLint;
  267.   typedef __int64 TStamp;
  268.   typedef int INTsys;
  269.   #define LLintP "%I64d"
  270.  #else
  271.  #if HTS_PLATFORM==0
  272.   typedef long long int LLint;
  273.   typedef long long int TStamp;
  274.   typedef int INTsys;
  275.   #define LLintP "%lld"
  276.  #else
  277.   typedef long long int LLint;
  278.   typedef long long int TStamp;
  279.   typedef int INTsys;
  280.   #define LLintP "%Ld"
  281.  #endif
  282.  #endif
  283. #endif
  284. #else
  285.  typedef int LLint;
  286.  typedef int INTsys;
  287.  typedef double TStamp;
  288.  #define LLintP "%d"
  289. #endif
  290.  
  291. /* Default alignement */
  292. #ifndef HTS_ALIGN
  293. #define HTS_ALIGN (sizeof(void*))
  294. #endif
  295.  
  296. /* IPV4, IPV6 and various unified structures */
  297. #define HTS_MAXADDRLEN 64
  298.  
  299. #if HTS_WIN
  300. #else
  301. #define __cdecl 
  302. #endif
  303.  
  304. /* mode pour mkdir ET chmod (accΦs aux fichiers) */
  305. #define HTS_PROTECT_FOLDER (S_IRUSR|S_IWUSR|S_IXUSR)
  306. #if HTS_ACCESS
  307. #define HTS_ACCESS_FILE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
  308. #define HTS_ACCESS_FOLDER (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
  309. #else
  310. #define HTS_ACCESS_FILE (S_IRUSR|S_IWUSR)
  311. #define HTS_ACCESS_FOLDER (S_IRUSR|S_IWUSR|S_IXUSR)
  312. #endif
  313.  
  314. /* vΘrifier la dΘclaration des variables prΘprocesseur */
  315. #ifndef HTS_DOSNAME
  316. #error | HTS_DOSNAME Has not been defined.
  317. #error | Set it to 1 if you are under DOS, 0 under Unix.
  318. #error | Example: place this line in you source, before includes:
  319. #error | #define HTS_DOSNAME 0
  320. #error
  321. #error
  322. #endif
  323. #ifndef HTS_ACCESS
  324. /* Par dΘfaut, accΦs α tous les utilisateurs */
  325. #define HTS_ACCESS 1
  326. #endif
  327.  
  328. /* fflush sur stdout */
  329. #define io_flush { fflush(stdout); fflush(stdin); }
  330.  
  331.  
  332.  
  333. /* HTSLib */
  334.  
  335. // Cache DNS, accΘlΦre les rΘsolution d'adresses
  336. #define HTS_DNSCACHE 1
  337.  
  338. // ID d'une pseudo-socket locale pour les file://
  339. #define LOCAL_SOCKET_ID -500000
  340.  
  341. // taille de chaque buffer (10 sockets 650 ko)
  342. #define TAILLE_BUFFER 65535
  343.  
  344. #if HTS_WIN
  345. #else
  346. // use pthreads.h
  347. #ifdef HTS_DO_NOT_USE_PTHREAD
  348. #define USE_PTHREAD 0
  349. #else
  350. #define USE_PTHREAD 1
  351. #endif
  352. #endif
  353.  
  354. #if HTS_WIN
  355. #define USE_BEGINTHREAD 1
  356. #else
  357. #if USE_PTHREAD
  358. #define USE_BEGINTHREAD 1
  359. #else
  360. /* sh*t.. */
  361. #define USE_BEGINTHREAD 0
  362. #endif
  363. #endif
  364.  
  365. #ifdef _DEBUG
  366. // trace mallocs
  367. //#define HTS_TRACE_MALLOC
  368. #ifdef HTS_TRACE_MALLOC
  369. typedef unsigned long int t_htsboundary;
  370. typedef struct _mlink {
  371.   char* adr;
  372.   int len;
  373.   int id;
  374.   struct _mlink* next;
  375. } mlink;
  376. static const t_htsboundary htsboundary = 0xDEADBEEF;
  377. #endif
  378. #endif
  379.  
  380.  
  381.  
  382. /* ------------------------------------------------------------ */
  383. /* Debugging                                                    */
  384. /* ------------------------------------------------------------ */
  385.  
  386. // dΘbuggage types
  387. #define DEBUG_SHOWTYPES 0
  388. // backing debug
  389. #define BDEBUG 0
  390. // chunk receive
  391. #define CHUNKDEBUG 0
  392. // realloc links debug
  393. #define MDEBUG 0
  394. // cache debug
  395. #define DEBUGCA 0
  396. // DNS debug
  397. #define DEBUGDNS 0
  398. // savename debug
  399. #define DEBUG_SAVENAME 0
  400. // debug robots
  401. #define DEBUG_ROBOTS 0
  402. // debug hash
  403. #define DEBUG_HASH 0
  404. // VΘrification d'intΘgritΘ
  405. #define DEBUG_CHECKINT 0
  406. // nbr sockets debug
  407. #define NSDEBUG 0
  408.  
  409. // dΘbuggage HTSLib
  410. #define HDEBUG 0
  411. // surveillance de la connexion
  412. #define CNXDEBUG 0
  413. // debuggage cookies
  414. #define DEBUG_COOK 0
  415. // dΘbuggage hard..
  416. #define HTS_WIDE_DEBUG 0
  417. // debuggage deletehttp et cie
  418. #define HTS_DEBUG_CLOSESOCK 0
  419. // debug tracage mΘmoire
  420. #define MEMDEBUG 0
  421.  
  422. // htsmain
  423. #define DEBUG_STEPS 0
  424.  
  425. #endif
  426.  
  427.